//Biblioteca De cutrenti

//Funcion simple para parasear bbcode de youtube
function parsearBBCODE(texto)
{
	var cosa = texto;
	var modificado = texto;
	var re = /\[([^\]]*)\]([^\[]*)\[\/([^\]]*)?/g;
	var match;
	match = re.exec(cosa);
	while (match != null)
	{
		if(match != null)
		{
			if(match[1] == "youtube")
			{
					modificado = modificado.replace("[youtube]"+match[2]+"[/youtube]", '<object width="425" height="350"><param movie="http://www.youtube.com/v/'+match[2]+'&amp;f=videos&amp;app=youtube_gdata/&amp;autoplay=0"><param wmode="transparent"><embed wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/'+match[2]+'&amp;f=videos&amp;app=youtube_gdata/&amp;autoplay=0" width="325" height="250"></object>');
			}
		}
		match = re.exec(cosa);
		
	}
	return modificado;
}

//Para gestionar todo lo necesario sobre las cajas de texto
/*
 * Se le pasa como parametro el id del textarea
 * crear() - Crea el tinymce
 * getContenido() - Obtiene el contenido
 * limpiar() - Vacia el texto
 * enviar(url,callback) - Envia a la url el contenido del tinymce
 * 		como variable post llamada contenido y ejecuta la funcion callback
 * 		a quien le pasa como argumento la respuesta ajax
 */
var EditorTexto = function(id) {
	var id = id;
	var callback;
	var resultado = {
		success : function (o) {
			var ed = tinyMCE.get(id);
			//Para que no pete si no se mete funcion callback y que
			//solo se haga el eval si la funcion existe
			try{
				if(typeof(window[callback]) != "undefined") {
					eval(""+callback+"(o)");
				}else{
					throw('La funcion "'+callback+'" no esta definida');
				}
			}catch(e){}
			ed.setProgressState(0);
		},
		failure : function (o) {
			
		}
	}
	
	
	return {
		crear: function() {
		
			tinyMCE.init({
				mode : "exact",
				elements : id,
				theme : "advanced",
				skin : "o2k7",
				plugins : "advimage,advlink,emotions,inlinepopups,media",
				theme_advanced_buttons1 : "emotions,|,bold,italic,underline,strikethrough,|,undo,redo,|,link,unlink,image,media",
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_resizing : true,
				content_css : "/plantillas/cssTinyMCE.php",
				template_external_list_url : "lists/template_list.js",
				external_link_list_url : "lists/link_list.js",
				external_image_list_url : "lists/image_list.js",
				media_external_list_url : "lists/media_list.js",
				setup : function(ed) {
					ed.onSetContent.add(function() {
						//Para que no se quite el focus cuando se limpia el editor
						//Gracias a ChronoZ
						//Thanks to ChronoZ
						//http://tinymce.moxiecode.com/punbb/viewtopic.php?id=12911
						//workaround for Webkit to fix focus problems when setting contents to an empty string
						window.focus();
						ed.focus();
					});                        
				}

			});
		},
		
		getContenido: function() {
			var ed = tinyMCE.get(id);
			return ed.getContent();
		},
		
		setContenido: function(contenido) {
			var ed = tinyMCE.get(id);
			return ed.setContent(contenido);
		},
		
		limpiar: function() {
			var ed = tinyMCE.get(id);
			ed.setContent('');
		},
		
		enviar: function(url,llamarA) {
			var ed = tinyMCE.get(id);
			ed.setProgressState(1);
			callback = llamarA;
			YAHOO.util.Connect.asyncRequest('POST',url, resultado, 'contenido='+encodeURIComponent(this.getContenido()));
			this.limpiar();
		}
		
	}
};

//////

function crearPaginador(nombre,paginasTotales,entradasPorPagina,urlBasica,callback)
{
	
  var Espacio = YAHOO.namespace(nombre);
  Espacio.content = YAHOO.util.Dom.get('contenido'+nombre);

  Espacio.handlePagination = function (state) {
    var startIndex = state.recordOffset;
    Espacio.content.start = startIndex + 1;
    Espacio.paginator.setState(state);
	Espacio.content.innerHTML = '<div align="center"><img align="center" alt="Cargando" src="/js/tiny_mce/themes/advanced/skins/default/img/progress.gif"></div>';
    YAHOO.util.Connect.asyncRequest('GET',urlBasica+'&desde='+Espacio.content.start+'&cantidad='+entradasPorPagina, callback);
  };

  Espacio.paginator = new YAHOO.widget.Paginator({
    rowsPerPage : entradasPorPagina,
    totalRecords : paginasTotales,
    containers : 'pContainer'+nombre,
    template : "{PreviousPageLink} {CurrentPageReport} {NextPageLink}",
    previousPageLinkLabel : '<span>Anterior</span>',
    nextPageLinkLabel : '<span>Siguiente</span>',
    pageReportTemplate : "{startRecord} - {endRecord} de {totalRecords}"
  });

  Espacio.paginator.subscribe('changeRequest', Espacio.handlePagination);
  Espacio.paginator.render();
  Espacio.handlePagination(Espacio.paginator.getState());
}

function modoCargando(elemento,opcion)
{
	if(opcion)
	{
		elemento
	}
}


//Para crear combos (los select de html)
//id es el identificador
//datos es un array javascript con los datos
//titulo es el texto que se mostrara cuando no hay nada seleccionado
//true o false para que se pueda escribir o no en el input
function crearCombo(id,datos,titulo,readonly)
{
    // Instantiate DataSources
    var bDS = new YAHOO.util.LocalDataSource(datos);

    // Instantiate AutoCompletes
    var oConfigs = {
        prehighlightClassName: "yui-ac-prehighlight",
        useShadow: true,
        queryDelay: 0,
        minQueryLength: 0,
        animVert: .01,
		maxResultsDisplayed: 15,
		forceSelection: true
    }
	
	if(readonly==true)
	{
		document.getElementById(id+"InputAutoComplete").setAttribute("READONLY", "READONLY");
	}
	
	if(titulo.length>0)
		YAHOO.util.Dom.get(id+"InputAutoComplete").value=titulo;
	else
		YAHOO.util.Dom.get(id+"InputAutoComplete").value="Selecciona de la lista";
	
    var bAC = new YAHOO.widget.AutoComplete(id+"InputAutoComplete", id+"ContainerAutoComplete", bDS, oConfigs);
    
    // Breakfast combobox
    var bToggler = YAHOO.util.Dom.get(id+"ToggleAutoComplete");
    var oPushButtonB = new YAHOO.widget.Button({container:bToggler});
    var toggleB = function(e) {
        //YAHOO.util.Event.stopEvent(e);
        if(!YAHOO.util.Dom.hasClass(bToggler, "open")) {
            YAHOO.util.Dom.addClass(bToggler, "open")
        }
    
        // Is open
        if(bAC.isContainerOpen()) {
            bAC.collapseContainer();
        }
        // Is closed
        else {
            bAC.getInputEl().focus(); // Needed to keep widget active
            setTimeout(function() { // For IE
                bAC.sendQuery("");
            },0);
        }
    }
    oPushButtonB.on("click", toggleB);
    bAC.containerCollapseEvent.subscribe(function(){YAHOO.util.Dom.removeClass(bToggler, "open")});

    return {
        bDS: bDS,
        bAC: bAC
    };
}

//////////

//Para formatear el tiempo
//cuando se saca del mysql (hh:mm:ss)

function formatearFecha(fecha)
{
	tiempos=fecha.split(":");

	//Horas
	if(tiempos[0]>=24)
	{
		dias=Math.floor(tiempos[0]/24);
		if(dias==1)
		{
			ultimaActividad=dias+" dia";
		}
		else if(dias<5)
		{
			if(dias > 1)
			{ultimaActividad=dias+" dias";}
			else
			{ultimaActividad=dias+" dia";}
		}
		else
			ultimaActividad=" bastante, anímale a que entre!";
	}else{
		//Minutos
		if(tiempos[1] == 1) { minStr="minuto";}
		else { minStr="minutos";}
		
		//Segundos
		//if(tiempos[2] == 1) { secStr="segundo";}
		//else { secStr="segundos";}
		
		if(tiempos[0]>0){
			
			if(tiempos[0] == 1) { horStr="hora";}
			else { horStr="horas";}
		
			ultimaActividad=tiempos[0]+" "+horStr+" y "+tiempos[1]+" "+minStr;
		}else{
			ultimaActividad=tiempos[1]+" "+minStr;
		}
	}
	return ultimaActividad;
}

/* Para iniciar la lampara de lava */
        $(function() {
            $("#menuLava").lavaLamp({
                fx: "backout",
                speed: 700,
                click: function(event, menuItem) {
					
                    return false;
                }
            });
        });

/* Para el dock */
	$(document).ready(
		function()
		{
			$('#dock').Fisheye(
				{
					maxWidth: 50,
					items: 'a',
					itemsText: 'span',
					container: '.dock-container',
					itemWidth: 30,
					proximity: 90,
					halign : 'center'
				}
			)
		}
	);
	
	

function cargarEstilo(tema,idUsuario)
{
	var fileref=document.createElement("link")
	fileref.setAttribute("rel", "stylesheet")
	fileref.setAttribute("type", "text/css")
	if(idUsuario != undefined && tema == "personalizada")
	{
		fileref.setAttribute("href", "/plantillas/"+tema+"/css/principal.php?uuid="+idUsuario)
	}else{
		fileref.setAttribute("href", "/plantillas/"+tema+"/css/principal.css")
	}
    document.getElementsByTagName("head")[0].appendChild(fileref);

}

function resultadoEnviarMensajePrivado(o)
{
	var mensajes = [];
        try {
			var Msg = YAHOO.namespace('mensajePrivado');
			
            respuesta = YAHOO.lang.JSON.parse(o.responseText);
			if(respuesta.enviado=="ok")
			{
				Msg.panel.setBody("<div align=\"center\">Mensaje enviado satisfactoriamente</div>");
			}else{
				Msg.panel.setBody("<div align=\"center\">No se pudo enviar el mensaje!</div>");	
			}
						
			setTimeout("YAHOO.namespace('mensajePrivado').panel.hide();",2000);
        }
        catch (x) {
            return;
        }
}
var resultadoEnviarMensajePrivadoRes = {
    success : function (o) {
			resultadoEnviarMensajePrivado(o);
    }
};



//Deprecated
function enviarMensajePrivado(idUsuario,mensaje)
{
	YAHOO.util.Connect.asyncRequest('POST','consultasAjax.php?seccion=mensajesPrivados&receptor='+idUsuario, resultadoEnviarMensajePrivado, 'mensaje='+mensaje);
}
function dialogoEnviarMensaje(idUsuario,nombreUsuario)
{
	var Msg = YAHOO.namespace('mensajePrivado');
	try {
		Msg.panel.hide();
	}catch(e){}

	Msg.panel = new YAHOO.widget.Panel("panelMensajePrivado", { fixedcenter : true, width:"320px", visible:false, draggable:true, close:true } ); 
	Msg.panel.setHeader("Enviar mensaje a "+nombreUsuario); 
	
	Msg.panel.setBody("<div align=\"center\"><textarea name=\"mensajePrivado\"></textarea></div><br><a href=\"javascript:void(0)\" class=\"boton\" onclick=\"var mensajeTexto = new EditorTexto (\'mensajePrivado\'); mensajeTexto.enviar(\'consultasAjax.php?seccion=mensajesPrivados&receptor="+idUsuario+"\',\'resultadoEnviarMensajePrivado\')\"><span>Enviar</span></a><br><br><br>");
	
	Msg.panel.render(document.body); 
	
	var mensajeTexto = new EditorTexto ("mensajePrivado");
	mensajeTexto.crear();
	
 tinyMCE.init({
		// General options
		mode : "textareas",
		theme : "advanced",
		skin : "o2k7",
		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,media",

		// Theme options
		theme_advanced_buttons1 : "emotions,|,bold,italic,underline,strikethrough,|,undo,redo,|,link,unlink,image,media",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_resizing : true,

		// Example content CSS (should be your site CSS)
		content_css : "/plantillas/cssTinyMCE.php",

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "lists/template_list.js",
		external_link_list_url : "lists/link_list.js",
		external_image_list_url : "lists/image_list.js",
		media_external_list_url : "lists/media_list.js",

		// Replace values for the template plugin
		template_replace_values : {
			username : "Some User",
			staffid : "991234"
		}
	});
	
	Msg.panel.show();
}


//Para mantener el historial, thanks to http://www.mikage.to/
	function pageload(hash) {
		if(hash) {
			$("#respuesta").load("index.php?"+hash,function(){
					
				if(hash.indexOf("perfil") == -1 && hash.indexOf("foto") == -1)
				{
					//El widget blog se encarga de cargar el estilo
					if(miTema == "personalizada")
					{
						cargarEstilo(miTema,$("#idUsuraio").val());
					}else{
						cargarEstilo(miTema);
					}
					
				}
				if(YAHOO.util.Dom.get('config').value.length>0)
					iNettuts.init(YAHOO.util.Dom.get('config').value);
					
					YAHOO.util.Event.onDOMReady(ynf.init);
					$(".estado").hide();	
			});

		} else {
			$("#respuesta").load("index.php?seccion=inicio",function(){
				cargarEstilo(miTema);
				if(YAHOO.util.Dom.get('config').value.length>0)
					iNettuts.init(YAHOO.util.Dom.get('config').value);
					
					YAHOO.util.Event.onDOMReady(ynf.init);
					$(".estado").hide();	
				//iNettuts.init("widget1,not-collapsed;widget2,not-collapsed|widget6,not-collapsed;widget5,not-collapsed;widget4,not-collapsed");
			});
		}
	}
	
	$(document).ready(function(){
		$.historyInit(pageload);

			
		$("a[rel='history']").click(function(){
			//
			var hash = this.href;
			hash = hash.replace(/^.*#/, '');
			$.historyLoad(hash);
			return false;
		});
		
		
	});
	
	//Autocompletador de amigos
$(document).ready(function(){
	YAHOO.example.FnMultipleFields = function(){
 // var myContacts = YAHOO.example.amigos;
    
    // Define a custom search function for the DataSource
    var matchNames = function(sQuery) {
        // Case insensitive matching
        var query = sQuery.toLowerCase(),
            contact,
            i=0,
            l=YAHOO.example.amigos.length,
            matches = [];
        
        // Match against each name of each contact
        for(; i<l; i++) {
            contact = YAHOO.example.amigos[i];
            if((contact.fname.toLowerCase().indexOf(query) > -1) ||
                (contact.lname.toLowerCase().indexOf(query) > -1) ||
                (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
                matches[matches.length] = contact;
            }
        }

        return matches;
    };

    // Use a FunctionDataSource
    var oDS = new YAHOO.util.FunctionDataSource(matchNames);
    oDS.responseSchema = {
        fields: ["id", "fname", "lname", "nname"]
    }

    // Instantiate AutoComplete
    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);
    oAC.useShadow = true;
    oAC.resultTypeList = false;
    
    
    // Custom formatter to highlight the matching letters
    oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
        var query = sQuery.toLowerCase(),
            fname = oResultData.fname,
            lname = oResultData.lname,
            nname = oResultData.nname || "", // Guard against null value
            query = sQuery.toLowerCase(),
            fnameMatchIndex = fname.toLowerCase().indexOf(query),
            lnameMatchIndex = lname.toLowerCase().indexOf(query),
            nnameMatchIndex = nname.toLowerCase().indexOf(query),
            displayfname, displaylname, displaynname;
            
        if(fnameMatchIndex > -1) {
            displayfname = highlightMatch(fname, query, fnameMatchIndex);
        }
        else {
            displayfname = fname;
        }

        if(lnameMatchIndex > -1) {
            displaylname = highlightMatch(lname, query, lnameMatchIndex);
        }
        else {
            displaylname = lname;
        }

        if(nnameMatchIndex > -1) {
            displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
        }
        else {
            displaynname = nname ? "(" + nname + ")" : "";
        }

        return displayfname + " " + displaylname + " " + displaynname;
        
    };
    
    // Helper function for the formatter
    var highlightMatch = function(full, snippet, matchindex) {
        return full.substring(0, matchindex) + 
                "<span class='match'>" + 
                full.substr(matchindex, snippet.length) + 
                "</span>" +
                full.substring(matchindex + snippet.length);
    };

    // Define an event handler to populate a hidden form field
    // when an item gets selected and populate the input field
    var myHiddenField = YAHOO.util.Dom.get("myHidden");
    var myHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance
        var elLI = aArgs[1]; // reference to the selected LI element
        var oData = aArgs[2]; // object literal of selected item's result data
        
        // update hidden form field with the selected item's ID
        myHiddenField.value = oData.id;
        
        myAC.getInputEl().value = oData.fname + " " + oData.lname + (oData.nname ? " (" + oData.nname + ")" : "");
    };
    oAC.itemSelectEvent.subscribe(myHandler);
    
    return {
        oDS: oDS,
        oAC: oAC 
    };
}();	
	});
	
	//Cosas del uploader
	//$(document).ready(function(){	
		var div = document.getElementById('respuesta'); 
	
	var handleSuccess = function(o){
		div.innerHTML = o.responseText; 
	}

	var handleFailure = function(o){
		div.innerHTML = "Transaction id: " + o.tId + "";
		div.innerHTML += "HTTP status: " + o.status + "";
		div.innerHTML += "Status code message: " + o.statusText + "";
	}

	var callback =
	{
	  success:handleSuccess,
	  failure: handleFailure
	};
	
	function buscarPersona()
	{
		var id = YAHOO.util.Dom.get("myHidden");
		var nombre = YAHOO.util.Dom.get("myInput");
		if(id.value!="")
		{
			$.historyLoad("seccion=perfil&uuid="+id.value);
			id.value="";
		}
		else
		{
			$.historyLoad("seccion=buscar&nombre="+nombre.value);
			
		}
	}
//});		



//El tema de las fotos
	function mostrarPanelSubirFotos()
	{
		panelSubirFotos.show();
	}
	
$(document).ready(function(){	

	//Panel para subir fotos
	cuerpoFotos='<div id="uiElements" style="display:inline;">';
	cuerpoFotos+='	<div id="uploaderContainer">';
	cuerpoFotos+='		<div id="uploaderOverlay" style="position:absolute; z-index:2"></div>';
	cuerpoFotos+='			<div id="selectFilesLink" style="z-index:1"><a id="selectLink" href="#">Seleccionar Fotos</a></div>';
	cuerpoFotos+='</div>';

	cuerpoFotos+='		<div id="uploadFilesLink"><a id="uploadLink" onClick="upload(); return false;" href="javascript:void(0)">Subir Fotos</a></div>';
	cuerpoFotos+='</div>';

	cuerpoFotos+='<input type="hidden" value="3" id="simulUploads">';


	cuerpoFotos+='<div id="dataTableContainer"></div>';
	cuerpoFotos+='<div id="mensajeFotos"></div>';
			panelSubirFotos = new YAHOO.widget.Panel("panelSubirFotos", { fixedcenter : true, width:"320px", visible:false, draggable:true, close:true } );
			panelSubirFotos.setHeader("Subir Fotos");
			panelSubirFotos.setFooter(cuerpoFotos);
			panelSubirFotos.render(document.body);
	//Fin panel para subir fotos

//YAHOO.util.Event.addListener("linkSubirFotos", "click", mostrarPanelSubirFotos);

});
	/*
	$(document).ready(function(){
		
	});
	* */

//Para cargar imagenes	
$.fn.image = function(src){ 
   return this.each(function(){ 
     var i = new Image(); 
     i.src = src; 
     i.onload = posicionar(this,i); 
   }); 
 } 
function posicionar(donde,que)
{
	donde.appendChild(que);
}
